/**
 * @param datagrid 必选 列表容器ID 
 * @param datagridtoolbar 可选 工具条ID 
 * @param singleSelect 可选 记录是否单选 true单选、false多选
 */
function container(con){
	this.datagrid = con.datagrid;
	this.datagridtoolbar = con.datagridtoolbar == undefined ? null : con.datagridtoolbar;
	this.singleSelect = (con.singleSelect == undefined)||(con.singleSelect != false) ? true : false;
	this.pagination = (con.pagination == undefined)||(con.pagination != false) ? true : false;
}

/**
 * @param pageNumber 可选 页码
 * @param pageSize   可选 每页显示条数
 * @param search 必选 查询函数 
 * @param data 数据集合  初始化page对象时无需传参 包含{total：总记录数；rows：集合；search：搜索函数}
 * @param callback 可选 回调函数 
 */
function page(pager){
	this.pageNumber = pager == undefined || pager.pageNumber == undefined ? 0 : pager.pageNumber; 
	this.pageSize = pager == undefined || pager.pageSize == undefined ? 10 : pager.pageSize; 
	this.data={rows:[],total:0,search:pager == undefined || pager.search == undefined ? '' : pager.search};
	this.callback = pager == undefined || pager.callback == undefined ? '' : pager.callback;
};

/**
 * 分页过滤器
 * data：json数据：rows、total、callback
 */		
function pagerFilter(data){
	var dg = $(this);
	var opts = dg.datagrid('options');
	var pager = dg.datagrid('getPager');
	pager.pagination({
		pageList:[10,20,30,40,50],
		beforePageText:'第',
		afterPageText: '页,共 {pages} 页', 
		displayMsg: '当前显示 {from} - {to} 条记录   共 {total} 条记录',
		onSelectPage:function(pageNum, pageSize){
			opts.pageNumber = pageNum;
			opts.pageSize = pageSize;
			if(typeof(data.search) == 'function'){
				data.search(new page({pageNumber:pageNum-1,pageSize:pageSize}));
			}
/*			pager.pagination('refresh',{
				pageNumber:pageNum,
				pageSize:pageSize
			});
			dg.datagrid('loadData',data);*/
		}
	});
	return data;
}

/**
 * 获取列表
 * @param condition 查询条件
 * @param page  分页信息
 * @param callback 回调函数
 */
function query(url,condition,con, page){
	condition.page = page.pageNumber;
	condition.size = page.pageSize;
	$.ajax({
        type: "GET",
        url: url,
        dataType : "json",
        cache:false,
        data : condition,
        success : function(data) {
        	if(!showMsg(data)){
					return;
			}
			
			if(data.result == 'success'){
				page.data.total = data.content.totalElements;
	        	page.data.rows  = data.content.content;
			}
			/**
			 * 回调函数
			 */
			if(typeof(page.callback) == 'function'){
				page.callback(page.data.rows);
			}
			
			$(con.datagrid).datagrid({
				border:false,
				fitColumns:true,
				checkbox:true,
				fit:true,
				remoteSort:false,
				rownumbers:false,
				pageSize:page.pageSize,
				singleSelect:con.singleSelect,
				toolbar: con.datagridtoolbar,
				pagination:con.pagination,
				loadFilter:pagerFilter}).datagrid('loadData', page.data);
        }
    });
}


















/**
 * 初始化案件列表
 * @param data
 * @param page
 */
function init(page, con, callback){
	/**
	 * 设置列表
	 */
	datagrid(page.data, con.datagrid, con.datagridtoolbar);
	
	/**
	 * 回调函数
	 */
	if(typeof(callback) == 'function'){
		callback();
	}
	
	/**
	 * 设置分页
	 */
	pagination(con.datagrid, page, con.callback);
}

/**
 * 由于easyui分页（主要采用异步查询，返回json）控件无法满足要求，所以对源码进行了重写
 * 此分页js只对easyui分页控件可用
 * 设置分页控件
 * $datagrid 列表id
 * page 分页信息
 * callback 回调函数
 **/
function pagination($datagrid,page,callback){
	var pager = $($datagrid).datagrid('getPager');
	pager.pagination({
		pageNumber:parseInt(page.pageNumber)+1,
		pageSize:page.pageSize,
		total:page.data.total,
		pageList:[10,20,50,100],
		beforePageText:'第',
		afterPageText: '页,共 {pages} 页', 
		displayMsg: '当前显示 {from} - {to} 条记录   共 {total} 条记录',
		onSelectPage:function(pageNumber,pageSize){
			page.pageNumber = pageNumber-1;
			page.pageSize = pageSize;
			if(typeof(callback) == 'function'){
				callback(pageNumber,pageSize);
			}
			pager.pagination('refresh',{
				pageNumber:pageNum,
				pageSize:pageSize
			});
			$($datagrid).datagrid('reload');
		},
		nav:{
			first:
			{
				iconCls:"pagination-first",
				handler:function(){
					var opts=$(this).pagination("options");
					if(opts.pageNumber>1){
						$(this).pagination({pageNumber:1});
						if(typeof(callback) == 'function'){
							callback(opts.pageNumber-1,opts.pageSize);
						}
					}
				}
			},
			prev:
			{
				iconCls:"pagination-prev",
				handler:function(){
					var opts=$(this).pagination("options");
					if(opts.pageNumber>1){
						$(this).pagination({pageNumber:opts.pageNumber-1});
						if(typeof(callback) == 'function'){
							callback(opts.pageNumber-1,opts.pageSize);
						}
					}
				}
			},
			next:
			{
				iconCls:"pagination-next",
				handler:function(){
					var opts=$(this).pagination("options");
					var pages=Math.ceil(opts.total/opts.pageSize);
					if(opts.pageNumber<pages){
						$(this).pagination({pageNumber:opts.pageNumber+1});
						if(typeof(callback) == 'function'){
							callback(opts.pageNumber-1,opts.pageSize);
						}
					}
				}
			},
			last:
			{
				iconCls:"pagination-last",
				handler:function(){
					var opts=$(this).pagination("options");
					var pages=Math.ceil(opts.total/opts.pageSize);
					if(opts.pageNumber<pages){
						$(this).pagination({pageNumber:pages});
						if(typeof(callback) == 'function'){
							callback(opts.pageNumber-1,opts.pageSize);
						}
					}
				}
			},
			refresh:
			{
				iconCls:"pagination-refresh",
				handler:function(){
					var opts=$(this).pagination("options");
					if(opts.onBeforeRefresh.call(this,opts.pageNumber,opts.pageSize)!=false){
						$(this).pagination("select",opts.pageNumber);
						opts.onRefresh.call(this,opts.pageNumber,opts.pageSize);
					}
				}
			}
		}
    });
}

/**
 * 由于easyui分页（主要采用异步查询，返回json）控件无法满足传统方式查询，所以对源码进行了重写
 * 此分页js只对easyui分页控件可用
 * 查询页面的form表单中必须有已下隐藏域
 * <input type="hidden" id="pageNumber" name="page" value="${page.number}"> <!-- 当前页码 -->
 * <input type="hidden" id="pageSize" name="size" value="${page.size}">     <!-- 每页显示条数 -->
 * <input type="hidden" id="totalElements" value="${page.totalElements}">   <!-- 总条数 -->
 * js调用示例：page('#datagrid','#pageNumber','#pageSize','#listform',$('#totalElements').val());
 * 设置分页控件
 * $datagrid 列表id
 * $pageNumber 当前页控件id
 * $pageSize   每页显示条数控件id
 * $form 表单控件id
 * total 总记录数
 **/
function page1($datagrid,$pageNumber,$pageSize,$form,total){
	var page = $($datagrid).datagrid('getPager');
	page.pagination({
		pageNumber:parseInt($($pageNumber).val())+1,
		pageSize:$($pageSize).val(),
		total:total,
		pageList:[10,20,50,100],
		beforePageText:'第',
		afterPageText: '页,共 {pages} 页', 
		displayMsg: '当前显示 {from} - {to} 条记录   共 {total} 条记录',
		onSelectPage:function(pageNumber,pageSize){
			$($pageNumber).val(pageNumber-1);
			$($pageSize).val(pageSize);
			$($form).submit();
		},
		nav:{
			first:
			{
				iconCls:"pagination-first",
				handler:function(){
					var opts=$(this).pagination("options");
					if(opts.pageNumber>1){
						$(this).pagination({pageNumber:1});
						$($pageNumber).val(0);
						$($pageSize).val(opts.pageSize);
						$($form).submit();
					}
				}
			},
			prev:
			{
				iconCls:"pagination-prev",
				handler:function(){
					var opts=$(this).pagination("options");
					if(opts.pageNumber>1){
						$(this).pagination({pageNumber:opts.pageNumber-1});
						if($($pageNumber).val()==opts.pageNumber){
							$($pageNumber).val(opts.pageNumber-1);
							$($pageSize).val(opts.pageSize);
						}
						$($form).submit();
					}
				}
			},
			next:
			{
				iconCls:"pagination-next",
				handler:function(){
					var opts=$(this).pagination("options");
					var pages=Math.ceil(opts.total/opts.pageSize);
					if(opts.pageNumber<pages){
						$($pageNumber).val(opts.pageNumber);
						$($pageSize).val(opts.pageSize);
						$(this).pagination({pageNumber:opts.pageNumber+1});
						$($form).submit();
					}
				}
			},
			last:
			{
				iconCls:"pagination-last",
				handler:function(){
					var opts=$(this).pagination("options");
					var pages=Math.ceil(opts.total/opts.pageSize);
					if(opts.pageNumber<pages){
						$(this).pagination({pageNumber:pages});
						$($pageNumber).val(pages-1);
						$($pageSize).val(opts.pageSize);
						$($form).submit();
					}
				}
			},
			refresh:
			{
				iconCls:"pagination-refresh",
				handler:function(){
					var opts=$(this).pagination("options");
					if(opts.onBeforeRefresh.call(this,opts.pageNumber,opts.pageSize)!=false){
						$(this).pagination("select",opts.pageNumber);
						opts.onRefresh.call(this,opts.pageNumber,opts.pageSize);
					}
				}
			}
		}

    });
}